const mongoose = require('mongoose')

// 通知模式定义
const notificationSchema = new mongoose.Schema({
  // 接收通知的用户
  user: {
    type: mongoose.Schema.Types.ObjectId,
    ref: 'User',
    required: true
  },
  // 发送通知的用户（如果是系统通知则为null）
  sender: {
    type: mongoose.Schema.Types.ObjectId,
    ref: 'User',
    default: null
  },
  // 通知类型
  type: {
    type: String,
    required: true,
    enum: ['system', 'comment', 'like', 'follow', 'mention', 'message']
  },
  // 通知标题
  title: {
    type: String,
    required: true
  },
  // 通知内容
  content: {
    type: String,
    required: true
  },
  // 相关内容ID（如评论的文章ID、点赞的内容ID等）
  relatedId: {
    type: mongoose.Schema.Types.ObjectId,
    default: null
  },
  // 相关内容类型
  relatedType: {
    type: String,
    enum: ['article', 'video', 'image', 'audio', 'comment', 'user', null],
    default: null
  },
  // 是否已读
  read: {
    type: Boolean,
    default: false
  },
  // 创建时间
  createdAt: {
    type: Date,
    default: Date.now
  }
}, {
  timestamps: true
})

// 创建索引
notificationSchema.index({ user: 1, createdAt: -1 })
notificationSchema.index({ user: 1, read: 1 })

// 创建并导出通知模型
const Notification = mongoose.model('Notification', notificationSchema)
module.exports = Notification